The development of the EDVAC computer system of 1948 is often cited as the beginning of the computer era. Since that time, computer systems have evolved into extremely sophisticated devices, and computer systems may be found in many different settings. Computer systems typically include a combination of hardware, such as semiconductors and circuit boards, and software, also known as computer programs. One of the primary uses of computer systems is for information storage and retrieval.
Database systems have been developed that allow a computer to store a large amount of information in a way that allows a user to search for and retrieve specific information in the database. For example, an insurance company may have a database that includes all of its policy holders and their current account information, including payment history, premium amount, policy number, policy type, exclusions to coverage, etc. A database system allows the insurance company to retrieve the account information for a single policy holder among the thousands and perhaps millions of policy holders in its database.
One very important concern in database systems relates to the recovery of data after a problem, such as a power outage or system failure, causes the loss of data. Mechanisms have been developed to log or journal changes to a database so that the database can be reconstructed from the log or journal if data is lost for some reason. These mechanisms are referred to herein as journal mechanisms, realizing that different names may be used to refer to the journaling function.
The database system journals or logs database object changes by sending information that describes the changes to a container, which is often called a journal receiver. Since a database may have many users and processes that can change data in the database, the information describing the object changes can quickly grow to be quite large. Since managing a single and very large journal receiver is unwieldy and cumbersome, database systems often use multiple, smaller, journal receivers and switch to a new journal receiver when the current journal receiver is full.
The database system needs a technique for determining when the journal receiver is full or nearly full. One current technique is to assign the journal receiver a hard threshold, which is an absolute number or size. Once the hard threshold is reached, the database system changes to a new journal receiver. This technique suffers from the problem that when many items are being stored in the journal receiver, the time needed to switch to a new journal receiver will temporarily slow down or even stop the incoming data until the new journal receiver is ready to accept the incoming data.
During this temporary stoppage, all the applications that are initiating the changes to the database that are causing the information to be sent to the journal receiver are also stopped. This temporary stoppage can have a dramatic effect on the users. Using the insurance company example from above, customers who call in wanting to buy insurance or inquire about their policy may experience a delay while the database system switches journal receivers. This delay annoys the customers and may prompt them to take their business elsewhere, causing the insurance company to lose money.
Without a better way to handle the switching of journal receivers, computers will continue to suffer with poor performance, which is annoying and expensive for the users. Although the aforementioned problems have been described in the context of switching journal receivers, they may apply to the switching of any type of container or data repository and to the transfer of any type of data to the container.